package br.com.imob.dao;

import br.com.imob.modelo.TipoImovel;

import java.util.List;

/** @user Gilton Nascimento
 *  @since 11:58:05 31/01/2011 2011
 *  @version 
 */

public class TipoImovelDao extends GenericDao {

	public TipoImovelDao() {  }
	
	public Integer adicionarTipoImovel(TipoImovel tipo) {
		saveOrUpdatePojo(tipo);
		return tipo.getTipoImovelId();
	}
	
	public void removerTipoImovel(TipoImovel tipo) {
		removerPojo(tipo);
	}

	/* Precisa definir o ID */
	public void atualizarTipoImovel(TipoImovel recupera) {
		saveOrUpdatePojo(recupera);
	}
	
	/**
	 * Editar um TipoImovel
	 * @param String oldTipoImovel
	 * @param String newTipoImovel
	 */
	public void atualizarTipoImovel(String oldTipoImovel, String newTipoImovel ) {
		if ( ( !"".equals(oldTipoImovel) && oldTipoImovel != null )
			&& ( !"".equals(newTipoImovel) && newTipoImovel != null ) ) 
			atualizarTipoImovel( getTipoImovelQNamed(oldTipoImovel), new TipoImovel(newTipoImovel) );
	}
	
	
	/* Precisa definir qual atribuito sera a chave a identificar 
	 * a tupla a ser alterada */
	public void atualizarTipoImovel(TipoImovel recuperar, TipoImovel alterar) {
		recuperar = retriveTipoImovel(recuperar);
		
		if(alterar.getTipoImovel() != null)
			recuperar.setTipoImovel(alterar.getTipoImovel());
		
		saveOrUpdatePojo(recuperar);
	}
	
//	Artificio para Recuperar a Tupla de TipoImovel
	protected TipoImovel retriveTipoImovel(TipoImovel recuperar) {
		if(recuperar.getTipoImovelId() == null)
			return getTipoImovelQNamed(recuperar.getTipoImovel());
		else 
			return getTipoImovel(recuperar.getTipoImovelId());
	}
	
	
//	Consultas
	public TipoImovel getTipoImovel(Integer key) {
		return getPojoByID(TipoImovel.class, key);
	}
	public TipoImovel getTipoImovelByQuery(String query, Object...params) {
		return getPojoByQry(query, params);
	}
	public TipoImovel getTipoImovelQNamed(String fltrTipoImovel) {
		return getPojoByQNamed("TipoImovel.findByTipoImovel", fltrTipoImovel);
	}
	
	public List<TipoImovel> getTipoImoveis() {
		return (List<TipoImovel>) getALL(TipoImovel.class);
	}
	public List<TipoImovel> getTipoImoveisQNamedPRX(String fltrTipoImovel) {
		return getListByQNamedPRX("TipoImovel.findLikeByTipoImovel", fltrTipoImovel);
	}
	public List<TipoImovel> getTipoImoveisByQuery(String query, Object...params) {
		return getListByQry(query, params);
	}
	
}